﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

#if 0
int main()
{
	int a = 10;
	//&a -- & 取地址操作符
	//& 弹幕操作符
	//printf("%p\n", &a);//拿到第一个字节的地址（小地址）
	int* p = &a;//p是一个变量（指针变量），是一块空间
	//编号 - 地址 - 指针
	//p的类型是int*

	//*和int是分开的
	//*说明p是指针变量
	//int 说明P只想的对象是int 类型

	return 0;
}
#endif

#if 0
//把你记在本子里是为了有朝一日找到你
int main()
{
	int a = 10;
	int* p = &a;
	*p = 0;//* - 解引用操作符（间接访问操作符）

	//*&a = 0;// a = 0 
	printf("%d\n", a);

	return 0;
}
#endif

#if 0
int main()
{
	printf("%zd\n", sizeof(char*));
	printf("%zd\n", sizeof(short*));
	printf("%zd\n", sizeof(int*));
	printf("%zd\n", sizeof(double*));

	//32位平台下地址是32个bit位，指针变量⼤⼩是4个字节
	//64位平台下地址是64个bit位，指针变量⼤⼩是8个字节

	return 0;
}
#endif

#if 0
int main()
{
	//指针类型决定了指针进行解引用操作的时候
	//访问几个字节，也就是决定指针的权限！
	return 0;
}
#endif 

int main()
{
	int a = 10;
	int* pa = &a;
	char* pc = &a;

	printf("pa   = %p\n", pa);
	printf("pa+1 = %p\n", pa+1);

	printf("pc   = %p\n", pc);
	printf("pc+1 = %p\n", pc+1);

	//指针类型决定了指针进行+1，-1得到时候，一次走多远的距离
	//int* + 1  --> 走4个字节
	//char* + 1 --> 走1个字节

	return 0;
}